//pushplus token&url
//设置为你的pushplus token
let token = "cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
let url = "http://www.pushplus.plus/send";


//防止pushplus限制相同内容发送
let time = new Date();
var random1 = time;
//进入打卡流程
punchTheClock();


//输入密码，解锁屏幕
function password_input() {
    /*
    //设备魅蓝S6,安卓7，三星处理器
    //函数无法自动点击,只能使用此方法
    //下面方法无法使用自己获取坐标，使用这个方法
    sleep(1000);
    click(355, 990);
    sleep(1000);
    click(165, 665);
    sleep(1000);
    click(550, 490);
    sleep(1000);
    click(355, 990);
    sleep(1000);
    */

   //改为你的密码
    var password = "1470"
    for (var i = 0; i < password.length; i++) {
        var p = text(password[i].toString()).findOne().bounds();
        click(p.centerX(), p.centerY());
        sleep(500);
    }

}
//推送服务
function push(title, content, channel) {
    let r = http.postJson(url, {
        token: token,
        title: title,
        content: content + random1,
        channel: channel,
        template: "html"
    });
    log(r.body.string());
}

//检查屏幕是否唤醒，否则唤醒解锁
function unlock() {
    if (!device.isScreenOn()) {
        //唤醒屏幕
        // device.wakeUpIfNeeded();
        device.wakeUp();
        //程序休眠l秒
        sleep(1000);
        //滑动屏幕
        swipe(500, 2000, 500, 1000, 210);
        //调用解锁屏幕的方法
        password_input();
    }
}
//关闭钉钉，确保每一次打开界面相同
function closeApp(packageName) {
    var name = getPackageName("钉钉");
    if (!name) {
        if (getAppName(packageName)) {
            name = com.packageName;
        } else {
            return false;
        }
    }
    app.openAppSetting(name);
    text(app.getAppName(name)).waitFor();
    let is_sure = textMatches(/(.*强.*|.*停.*|.*结.*|.*行.*)/).findOne();
    if (is_sure.enabled()) {
        textMatches(/(.*强.*|.*停.*|.*结.*|.*行.*)/).findOne().click();
        textMatches(/(.*确.*|.*定.*)/).findOne().click();
        log(app.getAppName(name) + "应用已被关闭");
        sleep(1000);
        back();
    } else {
        log(app.getAppName(name) + "应用不能被正常关闭或不在后台运行");
        back();
    }
}


//打开钉钉
function openDingTalk() {
    launchApp("钉钉");
    sleep(7 * 1000);

    //判断是否已登录
    if (id("tv_welcome_name").exists()) {
        console.error("钉钉未登录");
        push("钉钉未登录", "warning,钉钉未登录", "mail")
        //退出程序
        exit();
    }

    //点击忽略更新（如果有）
    if (click("暂不更新")) {
        console.log("点击暂不更新");
    }

        //点击工作台
        clickMessage("工作台");
        sleep(5 * 1000);
    
        //点击上报进入打卡页面
        clickMessage("学生健康上报");
        // click(130,980);
        sleep(5 * 1000);
        clickMessage("今天");
        sleep(5 * 1000);

}

//健康上报
function healthSubmit() {
    //如果已打卡 界面没有提交 只有修改
    var edit = text("修改").findOnce();
    if (edit) {
        console.info("今日已打卡")
        push("今日打过卡啦", "warning,打过卡啦!", "mail")
    } else {
        //点击提交跳转到获取定位
        clickMessage("提交");
        sleep(3 * 1000);
        //获取定位
        clickMessage("获取"); //此处我的是获取,根据自己的更改
        sleep(3 * 1000);
        //点击提交
        clickMessage("提交");
        sleep(3 * 1000);
    }
    sleep(7 * 1000)
    //提交成功页面
    var res = text("查看你提交的表单").findOnce();
    if (res) {
        console.info("打卡成功");
        push("打卡成功", "今日打卡成功", "wechat");
    }
    if (!res && !edit) {
        console.error("打卡失败")
        push("打卡失败", "warning,打卡失败啦!", "mail")
    }

}

function punchTheClock() {
    unlock();
    //脚本执行时保持屏幕常亮
    device.keepScreenDim(5 * 1000);
    sleep(1 * 1000);
    closeApp();
    openDingTalk();
    healthSubmit();
    //返回主页
    home();
    //关闭屏幕常亮
    device.cancelKeepingAwake();

}

//根据控件文字点击，如果点击失败，则说明打卡流程无法正常进行，结束脚本运行
function clickMessage(message) {
    var n = 3;
    var logo = false;
    while (n--) {
        if (click(message)) {
            logo = true;
            break;
        }
        sleep(1000);
    }
    if (logo == false) {
        console.error("点击" + message + "出错");
        push("点击" + message + "出错","点击" + message + "出错","mail");
        exit();
    }
}